package com.hxd.tabactivityfragment.mvp.model

import com.hxd.tabactivityfragment.bean.UserBean
import com.hxd.tabactivityfragment.util.GsonToBean
import com.hxd.tabactivityfragment.util.L
import com.hxd.tabactivityfragment.util.ThreadUtil
import com.hxd.tabactivityfragment.util.URLProviderUtils
import com.kymjs.rxvolley.RxVolley
import com.kymjs.rxvolley.client.HttpCallback
import com.kymjs.rxvolley.client.HttpParams

/**
 *  项目名：    FoodOrigins
 *  包名：      com.hxd.tabactivityfragment.mvp.model
 *  文件名:     LoginModel
 *  创建者:     HXD
 *  创建时间:   2019/3/30 21:23
 *  描述:       这里处理登录时的数据
 */

class LoginModel {
    /**
     * 处理登录业务并返回结果
     */
    fun login(account: String, password: String, onLoginResultListener: OnLoginResultListener) {
        val params = HttpParams()
        params.put("account", account)
        params.put("password", password)
        RxVolley.post(URLProviderUtils.getIMPLoginUrl(), params, object : HttpCallback(){
            override fun onSuccess(t: String?) {
                val user = GsonToBean.JsonToBean<UserBean>(t)
                if (user.code == 1 ){
                    val params = HttpParams()
                    params.putHeaders("token", user.msg)
                    RxVolley.get(URLProviderUtils.getUserInfo(), params, object : HttpCallback(){
                        override fun onSuccess(result: String?) {
                            onLoginResultListener.loginSuccess(user, result!!)
                            L.i("data: $user")
                        }

                        override fun onFailure(errorNo: Int, strMsg: String?) {
                            L.i("getUserInfo Failure :  $strMsg")
                            //获取用户信息失败
                            onLoginResultListener.loginFailure(user.msg)
                        }
                    })
                }else{
                    //登录失败
                    onLoginResultListener.loginFailure(user.msg)
                }
            }

            override fun onFailure(errorNo: Int, strMsg: String) {
                //登录失败
                onLoginResultListener.loginFailure(strMsg)
            }
        })
    }


    //回调接口
    interface OnLoginResultListener {
        fun loginSuccess(user: UserBean, result:String) //登录成功后回调的方法，返回User对象
        fun loginFailure(msg:String) //登录失败后回掉的方法
    }
}